#include <stdio.h>
#include "main.h"


int init_queue(Queue ** q){
    (*q)= (Queue*)malloc(sizeof(int)*QUEUE_MAX_SIZE);
    (*q)->elements[QUEUE_MAX_SIZE]=0;
    return (*q)!=NULL? (*q)->size=0:1;
}


int enqueue (Queue * q, int value){
    if(!is_empty(q)){
        q->elements[q->size]=value;
        q->size++;
    } else{
        q->elements[q->size]=value;
        q->elements[q->size+1]=q->elements[q->size];
        q->size++;
    }
    return 1;
}


int dequeue(Queue * q, int *value){
    int i=0;
    (*value)=q->elements[0];
    while(i<q->size){
        q->elements[i]=q->elements[i+1];
        i++;
    }
    q->size--;
    return 0;
}


int first(Queue * q, int * value){
    *value=q->elements[0];
    return 0;
}

void print(Queue* queue){
    int index=0;
    while(index<queue->size){
        printf("%d  ",queue->elements[index]);
        index++;
    }
    printf("NULL\n");
}


int is_empty(Queue * q){
    if(q->size==0){
        return 0;
    }
    return 1;
}

// ���ض���q�е�Ԫ�ظ�����
int size(Queue * q){
    return q->size;
}

int main() {
    Queue *queue;
    int x;
    init_queue(&queue);
    for (int i = 0; i < 5; ++i) {
        enqueue(queue,i+1);
    }
    printf("%d\n",size(queue));
    print(queue);
    dequeue(queue,&x);
    print(queue);
    return 0;
}